<?php
	// Incluyo librería para manejo de base de datos
	include_once('scripts/db.class.php');

	// Cargo librería PHP necesaria para WebService
	if(!extension_loaded("soap")) {
		dl("php_soap.dll");
	}
	ini_set("soap.wsdl_cache_enabled","0");

	$server = new SoapServer("webservice.xml");

	function login($username,$password) {
		$db = new db();
		$db->connect();

		$sql = "
		 		SELECT id, password FROM usuarios
		 			WHERE username = '$username'
		 			LIMIT 1
    	";

	    $result = $db->query($sql);

	    // (int) 0=false 1=true
	    if (is_array($result)  &&  count($result) > 0  &&  $result[0]['password'] == $password)
	    	return (int)$result[0]['id'];
	    else
	        return 0; 
	}

	function register($username,$password) {
		if (login($username,$password) == 0) {
			$db = new db();
			$db->connect();

			$sql = "
			 		INSERT INTO usuarios(username,password)
			 		VALUES ('$username','$password')
	    	";

	    	// (int) usuario->id
		    return $db->insert($sql);
		}
		else return 0;
	}

	function addActivity($usuario_id, $titulo, $detalle, $fecha, $version) {
		$db = new db();
		$db->connect();
		
		$sql = "
		 		INSERT INTO actividades(titulo, detalle, fecha, usuario_id, version)
            		VALUES ('$titulo', '$detalle', '$fecha', $usuario_id, $version)
    	";
    	
    	// (int) actividad->id
    	return $db->insert($sql);
	}

	function deleteActivity($actividad_id) {
		$db = new db();
		$db->connect();
		
		$sql = "
		 		DELETE FROM actividades WHERE id = $actividad_id
    	";

    	// (int) 0=false 1=true
    	return $db->delete($sql);
	}

	function updateActivity($actividad_id, $titulo, $detalle, $fecha, $version) {
		$db = new db();
		$db->connect();

		$sql = "
		 		UPDATE actividades
		 				SET titulo  = '$titulo',
		 					detalle = '$detalle',
		 					fecha 	= '$fecha',
		 					version = $version
		 				WHERE id 	= $actividad_id
    	";

    	// (int) 0=false 1=true
    	return $db->update($sql);
	}

	function listActivities($usuario_id){
	    $db = new db();
	    $db->connect();
	    
	    $sql = "
	        SELECT id AS actividad_id, titulo, detalle, fecha, version
	        	FROM actividades WHERE usuario_id = $usuario_id
	    ";
	    
	    $result = $db->query($sql);

	    // (string)
	    if (is_array($result) && count($result) > 0) 
	    	return json_encode($result); 
	    else
	        return ''; 
	}


	function addContact($usuario_id, $nombre, $telefono, $email, $version) {
		$db = new db();
		$db->connect();
		
		$sql = "
		 		INSERT INTO contactos(nombre, telefono, email, usuario_id, version)
            		VALUES ('$nombre', '$telefono', '$email', $usuario_id, $version)
    	";
    	
    	// (int) contacto->id
    	return $db->insert($sql);
	}

	function deleteContact($contacto_id) {
		$db = new db();
		$db->connect();
		
		$sql = "
		 		DELETE FROM contactos WHERE id = $contacto_id
    	";

    	// (int) 0=false 1=true
    	return $db->delete($sql);
	}


	function updateContact($contacto_id, $nombre, $telefono, $email, $version) {
		$db = new db();
		$db->connect();

		$sql = "
		 		UPDATE contactos
		 				SET nombre   = '$nombre',
		 					telefono = '$telefono',
		 					email  	 = '$email',
		 					version  = $version
		 				WHERE id  	 = $contacto_id
    	";

    	// (int) 0=false 1=true
    	return $db->update($sql);
	}


	function listContacts($usuario_id){
	    $db = new db();
	    $db->connect();
	    
	    $sql = "
	        SELECT id AS contacto_id, nombre, telefono, email, version
	        	FROM contactos WHERE usuario_id = $usuario_id
	    ";
	    
	    $result = $db->query($sql);

	    // (string)
	    if (is_array($result) && count($result) > 0) 
	    	return json_encode($result); 
	    else
	        return ''; 
	}


	$server->AddFunction("login");
	$server->AddFunction("register");
	$server->AddFunction("addActivity");
	$server->AddFunction("deleteActivity");
	$server->AddFunction("updateActivity");
	$server->AddFunction("listActivities");
	$server->AddFunction("addContact");
	$server->AddFunction("deleteContact");
	$server->AddFunction("updateContact");
	$server->AddFunction("listContacts");
	
	$server->handle();